package dawn.jxufe.community.util;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.DigestUtils;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * @author dawn21
 * @version 1.0
 * @date 2022/7/10 22:17
 * @component 写两个工具类，便于操作
 */
public class CommunityUtil {
    //静态方法，很简单，导入之后直接调用就好。生成随机字符串。
    public static String generateUUID(){
        //生成的随机字符串中的"-"替换成空。
        return UUID.randomUUID().toString().replace("-","");
    }

    //MD5算法加密，key为密码+盐，返回加密后的字符串。
    public static String md5(String key){
        //判空
        if(StringUtils.isBlank(key)){
            return null;
        }
        return DigestUtils.md5DigestAsHex(key.getBytes());
    }

    // 写一个工具，使用Fastjson处理json字符串，比较快。要加入这个包的依赖。
    // 利用这个API开发几个工具方法。
    // 服务器返回给浏览器的数据一般分为几部分，本方法是将这几部分数据整合在一起。
    // 给浏览器返回一个编号 或 提示信息(成功、失败) 或 业务数据。
    // 返回json格式的字符串。
    public static String getJSONString(int code, String msg, Map<String, Object> map) {
        // 步骤：形参->封装->json对象->字符串(json格式的字符串)
        JSONObject json = new JSONObject();
        json.put("code", code);
        json.put("msg", msg);
        // 拆开map，将每一对键值对放入json对象中。
        if (map != null) {
            for (String key : map.keySet()) {
                json.put(key, map.get(key));
            }
        }
        return json.toJSONString();
    }

    // 重载，便于调用，参数不同。
    public static String getJSONString(int code, String msg) {
        return getJSONString(code, msg, null);
    }

    // 重载，便于调用，参数不同。
    public static String getJSONString(int code) {
        return getJSONString(code, null, null);
    }

    public static void main(String[] args) {
        // 测一下json
        Map<String, Object> map = new HashMap<>();
        map.put("name", "张三");
        map.put("age", 23);
        System.out.println(getJSONString(0, "ok", map));
    }

}
